package com.isc.homework01;

import java.io.*;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Scanner;

/**
 * 1.使用字符流的方式，编写一个客户端程序和服务器端程序
 * 2.客户端发送"name"，服务器端接收到后，返回"我是nova",nova是服务器端的名字
 * 3.客户端发送"hobby",服务器端接收到后，返回"编写java程序"
 * 4.如果不是这两个问题,回复"你说啥呢"
 */
public class Client {
    public static void main(String[] args) throws IOException {
        //使用tcp协议通信
        //使用Socket指明要发送的ip和端口
        Socket socket = new Socket(InetAddress.getByName("localhost"), 8888);

        //用户自定义输入信息
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入要发送给服务器端的消息:");
        String inputInfo = scanner.next();
        System.out.println("用户输入的信息是:" + inputInfo);

        //给服务器端发送信息
        OutputStream outputStream = socket.getOutputStream();
        outputStream.write(inputInfo.getBytes());
        socket.shutdownOutput();//消息结束符，不能用处理流发送数据，会抛异常
        System.out.println("客户端发送信息成功~");

        //接收服务器回复的消息
        InputStream inputStream = socket.getInputStream();
        BufferedInputStream bis = new BufferedInputStream(inputStream);
        byte[] buf = new byte[1024];
        int dataLength = 0;
        //sb用来存放所有服务端发送的数据
        StringBuilder sb = new StringBuilder();
        while ((dataLength = bis.read(buf)) != -1) {
            sb.append(new String(buf,0,dataLength));
        }
        System.out.println("接收到服务端的消息是:"+sb);

        //关闭资源
        bis.close();
        outputStream.close();
        socket.close();
    }
}
